package com.dh.leetcode.k1;

import org.junit.Assert;
import org.junit.Test;

/**
 * @ClassName: _1446_consecutive_characters
 * @Description: 1446. 连续字符
 * 给你一个字符串 s ，字符串的「能量」定义为：只包含一种字符的最长非空子字符串的长度。
 * <p>
 * 请你返回字符串的能量。
 * <p>
 * <p>
 * <p>
 * 示例 1：
 * <p>
 * 输入：s = "leetcode"
 * 输出：2
 * 解释：子字符串 "ee" 长度为 2 ，只包含字符 'e' 。
 * 示例 2：
 * <p>
 * 输入：s = "abbcccddddeeeeedcba"
 * 输出：5
 * 解释：子字符串 "eeeee" 长度为 5 ，只包含字符 'e' 。
 * 示例 3：
 * <p>
 * 输入：s = "triplepillooooow"
 * 输出：5
 * 示例 4：
 * <p>
 * 输入：s = "hooraaaaaaaaaaay"
 * 输出：11
 * 示例 5：
 * <p>
 * 输入：s = "tourist"
 * 输出：1
 * <p>
 * <p>
 * 提示：
 * <p>
 * 1 <= s.length <= 500
 * s 只包含小写英文字母。
 * <p>
 * https://leetcode-cn.com/problems/consecutive-characters/
 * @Author: shouzimu
 * @Date: 2021/12/1 8:41
 */
public class _1446_consecutive_characters {
    /**
     * 当前一个和当前长度不匹配时，count应该重置为0
     * @param s
     * @return
     */
    public int maxPower(String s) {
        int len = s.length();
        int count = 1;
        char pre = s.charAt(0);
        int maxLen = 1;
        for (int i = 1; i < len; i++) {
            char current = s.charAt(i);
            count++;
            if (pre != current) {
                count = 1;
                pre = current;
            }
            if (count > maxLen) {
                maxLen = count;
            }

        }
        return maxLen;
    }

    @Test
    public void maxPowerTest() {
        Assert.assertEquals(7, maxPower("aaaaaaa"));
        Assert.assertEquals(2, maxPower("leetcode"));
        Assert.assertEquals(5, maxPower("abbcccddddeeeeedcba"));
        Assert.assertEquals(5, maxPower("triplepillooooow"));
        Assert.assertEquals(11, maxPower("hooraaaaaaaaaaay"));
        Assert.assertEquals(1, maxPower("tourist"));
        Assert.assertEquals(1, maxPower("a"));
    }
}
